﻿using System;

namespace UnsafeCodeApplication
{
    class Program
    {
        static unsafe void Main(string[] args)
        {
            int var = 20;
            int* p = &var;
            Console.WriteLine("Data is: {0}", var);
            Console.WriteLine("Address is: {0}", (int)p);
            Console.ReadKey();
        }
    }
}
/*
C# 不安全代码 
当一个代码块使用 unsafe 修饰符标记时，C# 允许在函数中使用指针变量。不安全代码或非托管代码是指使用了指针变量的代码块。

指针变量
指针 是值为另一个变量的地址的变量，即，内存位置的直接地址。就像其他变量或常量，您必须在使用指针存储其他变量地址之前声明指针。
指针变量声明的一般形式为：
type* var-name;

int* p	    p 是指向整数的指针。
double* p	p 是指向双精度数的指针。
float* p	p 是指向浮点数的指针。
int** p	    p 是指向整数的指针的指针。
int*[] p	p 是指向整数的指针的一维数组。
char* p	    p 是指向字符的指针。
void* p	    p 是指向未知类型的指针。

在同一个声明中声明多个指针时，星号 * 仅与基础类型一起写入；而不是用作每个指针名称的前缀。 例如:
int* p1, p2, p3;     // 正确  
int *p1, *p2, *p3;   // 错误 

 */